home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / new_file / mintprgs / mint112s / mint112s.lzh / genmagic.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-30  |  1.8 KB  |  76 lines

  1. #include "mint.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stddef.h>
  5.  
  6. static void usage P_((void));
  7. int main(int argc, char **argv);
  8.  
  9. static void
  10. usage()
  11. {
  12.     fprintf(stderr, "Usage: genmagic outputfile\n");
  13.     exit(2);
  14. }
  15.  
  16. /* conventions:
  17.  * C_XXX is offset of XXX in CONTEXT struct
  18.  * P_XXX is offset of XXX in PROC struct
  19.  */
  20.  
  21. struct magics {
  22.     const char *name;
  23.     long value;
  24. } magics[] = {
  25.     { "C_PTRACE", offsetof(CONTEXT, ptrace)},
  26.     { "C_SFMT", offsetof(CONTEXT, sfmt)},
  27.     { "C_INTERNAL", offsetof(CONTEXT, internal)},
  28.     { "C_SR", offsetof(CONTEXT, sr)},
  29.     { "C_PC", offsetof(CONTEXT, pc)},
  30.     { "C_FSTATE", offsetof(CONTEXT, fstate)},
  31.     { "C_FREGS", offsetof(CONTEXT, fregs)},
  32.     { "C_FCTRL", offsetof(CONTEXT, fctrl)},
  33.     { "C_USP", offsetof(CONTEXT, usp)},
  34.     { "C_SSP", offsetof(CONTEXT, ssp)},
  35.     { "C_TERM", offsetof(CONTEXT, term_vec)},
  36.     { "C_D0", offsetof(CONTEXT, regs)},
  37.     { "C_A0", offsetof(CONTEXT, regs)+32},
  38.     { "C_CRP", offsetof(CONTEXT, crp)},
  39.     { "C_TC", offsetof(CONTEXT, tc)},
  40.     { "P_CTXT0", offsetof(PROC, ctxt)},
  41.     { "P_SYSTIME", offsetof(PROC, systime)},
  42.     { "P_USRTIME", offsetof(PROC, usrtime)},
  43.     { "P_PTRACER", offsetof(PROC, ptracer)},
  44.     { "P_SYSCTXT", offsetof(PROC, ctxt)},
  45.     { "P_EXCPC", offsetof(PROC, exception_pc)},
  46.     { "P_EXCSSP", offsetof(PROC, exception_ssp)},
  47.     { "P_EXCADDR", offsetof(PROC, exception_addr)},
  48.     { "P_EXCTBL", offsetof(PROC, exception_tbl)},
  49.     { "P_EXCMMUSR", offsetof(PROC, exception_mmusr)},
  50.     { (char *)0, 0 }
  51. };
  52.  
  53. int
  54. main(argc, argv)
  55.     int argc;
  56.     char **argv;
  57. {
  58.     FILE *f;
  59.     int i;
  60.  
  61.     if (argc != 2)
  62.         usage();
  63.     f = fopen(argv[1], "w");
  64.     if (!f) {
  65.         perror(argv[1]);
  66.         exit(1);
  67.     }
  68.  
  69.     for (i = 0; magics[i].name; i++) {
  70.         fprintf(f, "%%define %s %ld\n", magics[i].name,
  71.                 magics[i].value);
  72.     }
  73.     fclose(f);
  74.     return 0;
  75. }
  76.